#include <QCoreApplication>
#include <QDebug>
#include <header.h>

bool NameLess(const StudentInfo& s1, const StudentInfo& s2)
{
    return s1.Name < s2.Name; //姓名排序
}

bool StunumLess(const StudentInfo& s1, const StudentInfo& s2)
{
    return s1.Stunum < s2.Stunum; //学号排序
}

bool Sub1Less(const StudentInfo& s1, const StudentInfo& s2)
{
    return s1.sub1 < s2.sub1; //课程一排序
}

bool Sub2Less(const StudentInfo& s1, const StudentInfo& s2)
{
    return s1.sub2 < s2.sub2; //课程二排序
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    StudentInfo Lu;
    StudentInfo Lin;
    StudentInfo Song;
    StudentInfo Wu;

    Lu.Name="鲁智深" ;
    Lu.Stunum=1403130209;
    Lu.sub1=80;
    Lu.sub2=72;
    Lin.Name="林冲 ";
    Lin.Stunum=1403140101;
    Lin.sub1=82;
    Lin.sub2=76;
    Song.Name="宋江 ";
    Song.Stunum=1403140102;
    Song.sub1=76;
    Song.sub2=85;
    Wu.Name="武松 ";
    Wu.Stunum=1403140103;
    Wu.sub1=88;
    Wu.sub2=80;                            //学生信息初始化




    QList<StudentInfo> info;
    info.append(Lu);info.append(Lin);info.append(Song);info.append(Wu);//将信息装载入qlist



    qDebug()<<"整个学生名单为:";
        for(int i=0;i<info.size();i++){
            qDebug().noquote()<<info.at(i);
        }


        qDebug()<<"请选择想要排序的方式，名字[1],学号[2],课程一[3],课程二[4]";

       int control;
       scanf("%d",&control);

       switch (control) {

       case 1:{
       std::sort(info.begin(),info.end(),NameLess);
          qDebug()<<"按名字排序后整个学生名单为:";
          for(int i=0;i<info.size();i++){
              qDebug().noquote()<<info.at(i);
          }
       };break;

       case 2:{
       std::sort(info.begin(),info.end(),StunumLess);
          qDebug()<<"按学号排序后整个学生名单为:";
          for(int i=0;i<info.size();i++){
               qDebug().noquote()<<info.at(i);
          }
       };break;

       case 3:{
       std::sort(info.begin(),info.end(),Sub1Less);
          qDebug()<<"按课程一排序后整个学生名单为:";
          for(int i=0;i<info.size();i++){
               qDebug().noquote()<<info.at(i);
          }
       };break;

       case 4:{
       std::sort(info.begin(),info.end(),Sub2Less);
          qDebug()<<"按课程二排序后整个学生名单为:";
          for(int i=0;i<info.size();i++){
              qDebug().noquote()<<info.at(i);
          }
       };break;

       }           //按不同方式进行排序
    return a.exec();
}
